﻿using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using ContactManager.Models.Entities;

namespace ContactManager.Models
{
    public interface IContactManagerService
    {
        bool Add(Contact contactToCreate);
       // bool Delete<T>(T instanceToDelete) where T : class;
        bool DeleteContact(Contact ContactToDelete);

        bool EditContact(Contact contactToEdit);
        bool UpdateInstance<T,Y>(Guid InstanceID,T InstanceToUpdate) where T: class where Y : class;
        Contact GetContact(System.Guid id);
        IList <Contact> ListContacts();
          
        IList<Contact> FindAllContacts();
        IList<Contact> FindTodayContacts();
        IList<Contact> FindContactsBetweenDates(string field, DateTime date1, DateTime date2);
       
        //Groups
        bool CreateGroup(ContactGroup groupToCreate);
       IList<ContactGroup> ListGroups();
       IList<ContactGroup> FindAllGroups();
        ContactGroup GetGroup(Guid id);
        ContactGroup GetFirstGroup();
        bool DeleteGroup(ContactGroup groupToDelete);
        bool EditGroup(ContactGroup groupToEdit);
         
    }
}
